62 #define SLAVE_ADDRESS 0x48
65 static uint16_t RXDataIndex = 0;
66 static uint16_t NumOfRXBytes;
70 EUSCI_B_I2C_initMasterParam i2cConfig =
72 EUSCI_B_I2C_CLOCKSOURCE_SMCLK,
74 EUSCI_B_I2C_SET_DATA_RATE_400KBPS,
76 EUSCI_B_I2C_NO_AUTO_STOP
82 CS_setupDCO(CS_INTERNAL_RESISTOR);
85 CS_initClockSignal(CS_SMCLK, CS_CLOCK_DIVIDER_4);
88 GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,
89 GPIO_PIN6 | GPIO_PIN7,
90 GPIO_PRIMARY_MODULE_FUNCTION);
93 GPIO_setAsInputPin(GPIO_PORT_P1, GPIO_PIN0);
94 GPIO_selectInterruptEdge(GPIO_PORT_P1, GPIO_PIN0,
95 GPIO_HIGH_TO_LOW_TRANSITION);
96 GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN0);
97 GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN0);
100 EUSCI_B_I2C_initMaster(EUSCI_B0_BASE, &i2cConfig);
103 EUSCI_B_I2C_setMode(EUSCI_B0_BASE, EUSCI_B_I2C_RECEIVE_MODE);
109 EUSCI_B_I2C_enable(EUSCI_B0_BASE);
112 EUSCI_B_I2C_clearInterrupt(EUSCI_B0_BASE,
113 EUSCI_B_I2C_RECEIVE_INTERRUPT0);
116 __bis_SR_register(LPM0_bits | GIE);
119 #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
120 #pragma vector=USCI_B0_VECTOR
122 #elif defined(__GNUC__)
123 __attribute__((interrupt(USCI_B0_VECTOR)))
127 switch(__even_in_range(UCB0IV, USCI_I2C_UCBIT9IFG))
129 case USCI_NONE:
break;
130 case USCI_I2C_UCALIFG:
break;
131 case USCI_I2C_UCNACKIFG:
break;
132 case USCI_I2C_UCSTTIFG:
break;
133 case USCI_I2C_UCSTPIFG:
break;
134 case USCI_I2C_UCRXIFG3:
break;
135 case USCI_I2C_UCTXIFG3:
break;
136 case USCI_I2C_UCRXIFG2:
break;
137 case USCI_I2C_UCTXIFG2:
break;
138 case USCI_I2C_UCRXIFG1:
break;
139 case USCI_I2C_UCTXIFG1:
break;
140 case USCI_I2C_UCRXIFG0:
143 if(RXDataIndex == NumOfRXBytes - 2)
145 EUSCI_B_I2C_masterReceiveMultiByteStop(EUSCI_B0_BASE);
148 RXData[RXDataIndex++] = EUSCI_B_I2C_masterReceiveMultiByteNext(EUSCI_B0_BASE);
155 else if(RXDataIndex == NumOfRXBytes)
158 EUSCI_B_I2C_disableInterrupt(EUSCI_B0_BASE,
159 EUSCI_B_I2C_RECEIVE_INTERRUPT0);
160 GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN0);
165 case USCI_I2C_UCTXIFG0:
break;
166 case USCI_I2C_UCBCNTIFG:
break;
167 case USCI_I2C_UCCLTOIFG:
break;
168 case USCI_I2C_UCBIT9IFG:
break;
173 #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
174 #pragma vector=PORT1_VECTOR
176 #elif defined(__GNUC__)
177 __attribute__((interrupt(PORT1_VECTOR)))
181 switch(__even_in_range(P1IV, 0x10))
186 EUSCI_B_I2C_masterReceiveStart(EUSCI_B0_BASE);
187 EUSCI_B_I2C_enableInterrupt(EUSCI_B0_BASE,
188 EUSCI_B_I2C_RECEIVE_INTERRUPT0);
189 GPIO_disableInterrupt(GPIO_PORT_P1, GPIO_PIN0);